package ar.edu.ufasta.presupuestos.logica.aplicativo;

import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Vector;

import ar.edu.ufasta.presupuestos.logica.entidades.remito.RemitoCompra;
import ar.edu.ufasta.presupuestos.logica.entidades.remito.RemitoCompraFabrica;
import ar.edu.ufasta.presupuestos.logica.entidades.remito.RemitoCompraProveedor;
import ar.edu.ufasta.presupuestos.servicios.persistencia.ObjectID;
import ar.edu.ufasta.presupuestos.servicios.persistencia.PersistenceFacade;

public class ControladorSeccionRemitos extends ControladorGenerico {

	public Vector<Object[]> getRegistrosDonde(int tipo, String ordenLista, int condicion){
		Vector<Object[]> vec;
		vec = new Vector<Object[]>();
		switch (tipo) {
		case 1: // Fabricas
			vec = buscarRemitos(ordenLista, condicion);
			break;
		default:
			break;
		}
		return vec;
	}

	@SuppressWarnings("unchecked")
	private Vector<Object[]> buscarRemitos(String ordenLista, int condicion) {
		List<RemitoCompra> listado;
		Vector<Object[]> vec;
		vec = new Vector<Object[]>();
		
		Map<String, String> filtro = new Hashtable<String, String>();
		filtro.put("ID_estado", "0");
		listado = (List<RemitoCompra>) PersistenceFacade.getInstance().search(RemitoCompra.class, filtro);
		int tipo=99;
		for (Iterator iterator = listado.iterator(); iterator.hasNext();) {
			RemitoCompra remito = (RemitoCompra)iterator.next();
			if (remito instanceof RemitoCompraFabrica) {
				tipo = 1;				
			}
			if (remito instanceof RemitoCompraProveedor){
				tipo = 2;
			}
			//Devuelvo arreglo de valores a la lista
			// TODO Discriminar cuales son de proveedor y fabrica?
			Object[] record = new Object[5];
			record[0] = remito.getIDValue();
			record[1] = remito.getFechaEmision();
			record[2] = remito.getEstadoName();
			switch (tipo) {
			case 1:
				record[3] = "Fabrica";
				break;
			case 2:
				record[3] = "Proveedor";
				break;
			default:
				record[3] = "???";
				break;
			}
			record[4] = new Boolean(false);
			vec.addElement(record);		
		}
		return vec;
	}

	public Boolean finalizaRemito(int idRemito) {
		RemitoCompra remito = (RemitoCompra)PersistenceFacade.getInstance().get(new ObjectID(idRemito), RemitoCompra.class);
		return remito.finalizar();
	}
}
